Scroll to navigation

drbd.conf(5) DRBD - кластер дисків drbd.conf(5)

ІМ'Я

drbd.conf - Конфігураційний файл для пристроїв DRBD.

ВСТУП

Файл /etc/drbd.conf використовується програмами /etc/init.d/drbd та /etc/ha.d/resource.d/drbddisk котрі є частиною пакету DRBD.

Формат файлу розроблений так, що дозволяє нам мати ідентичні копії файлу на обох вузлах кластеру. Настирливо рекомендується цим скористатись для забезпечення нормального управління конфігурацією. Файл /etc/drbd.conf повинен бути однаковий на обох вузлах кластеру. Зміни в /etc/drbd.conf не вступають в силу негайно.

Маленький приклад файлу /etc/drbd.conf


resource drbd0 {
protocol C;
incon-degr-cmd "halt -f";

on primarydhcp {
device /dev/drbd1;
disk /dev/hda7;
address 10.0.0.10:7789;
meta-disk internal;
}

on secondarydhcp {
device /dev/drbd1;
disk /dev/hda7;
address 10.0.0.11:7789;
meta-disk internal;
}
}
В цьому прикладі є тільки один ресурс DRBD (названий drbd0) котрий використовує протокол C для зв'язку між його пристроями. Пристрій, що працює на вузлі primarydhcp використовує /dev/drbd1 як блочний пристрій для своїх програм, і /dev/hda7 як низькорівневий масив збереження даних. IP адрес використовується для вказання мережевого з'єднання.

Можна визначати багато розділів з ресурсами в одному файлі drbd.conf.

СТРУКТУРА ФАЙЛУ

Файл складається з розділів і параметрів. Розділ починається з ключового слова, часом з додаткового імені та відкриває дужки (``{``). Розділ закінчується закриванням дужки (``}``). Між дужками містяться параметри.


section [name] { parameter value; [...] }
Параметри починаються з імені параметру відділеного від значення пробілом. Кожний символ, що слідує за пробілом вважається частиною значення параметру. Виключенням є логічний (Boolean) параметр котрий містить тільки ідентифікатор. Параметр закінчується символом крапка з комою (``;``).

Деякі значення параметру мають визначені символи: K, M or G. котрі визначаються у звичний спосіб (K = 2^10 = 1024, M = 1024 K, G = 1024 M).

Файл може містити коментарі, які мусять починатись з (``#``). Після символу (``#``) дані ігноруються до кінця стрічки.

РОЗДІЛИ

Коментує текстове сміття, якщо воно навіть займає більш ніж одну стрічку. Символи між ключовим словом skip та відкритою дужкою (``{``) ігноруються. Все поміщене між дужки пропускається. Це допомагає коментувати цілі розділи:


skip {
resource [name] {...}
}

просто помістивши їх між дужки skip.

Вказує деякі глобальні параметри. Поки що дозволеними є minor-count, dialog-refresh та disable-io-hints. Можна використовувати тільки один розділ global, бажано самий перший.

Визначає сам ресурс DRBD. Кожний розділ, визначаючий ресурс, мусить містити дві секції "on ім'я-вузла" і може мати також секції startup, syncer, net та disk. Обов'язковим параметром розділу є protocol. Не обов'язковим: incon-degr-cmd.

Поєднує необхідні параметри конфіґурації DRBD пристрою для включених ресурсів. host-name є обов'язковим і мусить відповідати імені Лінукс компа (uname -n) одного з вузлів. Обов'язковими параметрами секції є: device, disk, address, meta-disk.

Цей розділ використовується для оптимізації DRBD пристроїв, а саме властивостей пов'язаних з низькорівневим обладнанням. Для детальної інформації про параметри читайте drbdsetup(8). Необов'язковим параметром є: on-io-error.

Розділ використовують для оптимізації мережевих властивостей DRBD. Для детальної інформації про параметри читайте drbdsetup(8). Необов'язковими параметрами є: sndbuf-size, timeout, connect-int, ping-int, max-buffers, max-epoch-size, ko-count, on-disconnect.

Розділ використовують для оптимізації властивостей запуску DRBD. Для детальної інформації про параметри читайте drbdsetup(8). Необов'язковими параметрами є: wfc-timeout, degr-wfc-timeout.

Розділ використовують для оптимізації пристрою синхронізаційного сервісу. Для детальної інформації про параметри читайте drbdsetup(8). Необов'язковими параметрами є: rate, group, al-extents.

ПАРАМЕТРИ

count може бути числом від 1 до 255.

Використовуйте minor-count, якщо бажаєте визначити більше ресурсів потім без перевантаження DRBD модуля ядра. По замовчуванню модуль вантажиться стільки раз скільки пристроїв визначено в конфігураційному файлі. По замовчуванню модуль збирається з 2, а монолітне ядро з 8. Для монолітного ядра параметр minor-count ігнорується, для зміни потрібно вказати параметр завантаження ядра drbd.minor_count=count.

час може бути >=0

Час в секундах і кількість разів скільки виводиться користувацьке застереження (не виводиться коли 0). По замовчуванню 1.

Використовуйте disable-io-hints якщо бажаєте встановити DRBD пристрій через зворотню петлю, чи між двома віртуальними серверами на одній машині, для тестування чи презентації. Не потрібна з ядром 2.6.*

По верх TCP/IP використовується спеціальний протокол. Допустимі протоколи: A, В, та C.

Протокол А: операція запису вважається завершеною, якщо дані досягли локального диску та локальної вихідної черги tcp.

Протокол В: операція запису вважається завершеною, якщо дані досягли локального диску та віддаленого буферу.

Протокол С: операція запису вважається завершеною, якщо дані досягли обох, локального та віддаленого, дисків.

У випадку коли при включенні вузла він вантажиться у виродженому режимі (inittimeout включений) і якщо локальна реплікація даних не є повна, запускається command. Якщо команда виконується без помилок drbddisk вважає що DRBD пристрій є в основному стані (primary).

Ім'я блочного пристрою вузла, що описується в розділі resource. Ви мусите використовувати саме цей пристрій для роботи з програмами (файловими системами) і ніколи не використовуйте низькорівневий блочний пристрій котрий вказаний з параметром disk.

Пристрій вузла мусить мати той самий головний номер, як і пристрій DRBD. В поточній реалізації використовується головний номер 147 і відповідні пристрої вузла називають /dev/drbd0, /dev/drbd1,...

При встановлені DRBD пакету скрипт створює /dev/drbd0 ... /dev/drbd8. Для переконання пошукайте за /dev/drbd*.

disk name
DRBD використовує цей пристрій для запису та зчитування даних. НІКОЛИ не користуйтесь цим пристроєм коли поверх нього працює DRBD. Це також відноситься до dumpe2fs(8) та подібних команд.

port :ресурс потребує вказати по парі IP:port адрес на кожний пристрій, котрий використовується для очікування вхідного зв'язку від пристрою іншого вузла, для встановлення з ним зв'язку.

Кожний DRBD ресурс потребує TCP порт котрий використовують для зв'язку з пристроєм партнерського вузла. Два різні DRBD ресурси не можуть використовувати ту саму пару IP:port на одному вузлі.

internal означає що останні 128 MB низькорівневого пристрою використовуються для службових даних. Не можна використовувати [index] разом з internal.

Можна використовувати єдиний блочний пристрій для зберігання службових даних багатьох DRBD пристроїв. Тобто використовуйте meta-disk /dev/hde6[0]; та meta-disk /dev/hde6[1]; для двох різних ресурсів. В цьому випадку мінімальний розмір для meta-disk мусить бути 256 MB.

handler включається, коли низькорівневий пристрій посилає помилку зчитування/запису на верхній рівень.

handler може бути : pass_on, panic, чи detach.

pass_on: Повідомляє помилку зчитування/запису на верхній рівень. На основному вузлі повідомляє примонтовану файлову систему. На другорядному ігнорує.

panic: Вузол залишає кластер створюючи паніку ядра.

detach: Вузол ігнорує низькорівневий пристрій та продовжує роботу в бездисковому режимі.

size є розміром вихідної черги TCP. По замовчуванню 128K. Можна вказати більше чи менше значення. Більше значення краще для збільшення пропускної здатності при використанні протоколу А через дуже стабільну мережу. Дуже великі значення ~1M можуть привести до проблем. А значення менші 32K не доречні.

Якщо партнерський вузол не може відіслати пакет з відповіддю протягом time десятих секунди, партнерський вузол вважається не робочим і тому TCP/IP зв'язок до нього розривається. Це значення мусить бути меншим ніж connect-int та ping-int. По замовчуванню є 60 = 6 секунд, крок 0.1 секунди.

У випадку неможливості зв'язку з віддаленим DRBD пристроєм негайно, DRBD продовжує спроби зв'язатись. З допомогою цього параметру можна вказати час між двома спробами. По замовчуванню значення є 10 секунд, крок 1 секунда.

Якщо зв'язок TCP/IP між парою пристроїв DRBD є вільним більш ніж time секунд, DRBD буде генерувати пакети keep-alive, для перевірки справної роботи партнера. По замовчуванню є 10 секунд, крок 1 секунда.

Максимальне число запитів, що приймається DRBD. Крок є PAGE_SIZE, котрий становіть 4 KB в більшості систем. Нижня грань 32 (=128 KB). Для забезпечення високої продуктивності допомагає збільшення number. Ця черга використовується для утримування даних поки вони записуються на диск.

Найвище число блоків даних між двома бар'єрами запису. Якщо встановити меншим за 10 може значно зменшити продуктивність.

У випадку зупинки другорядного вузла під час спроби завершити один запит запису count разів з часовими інтервалами timeout, вузол виключається з кластеру. (Тобто основний вузол переходить у вироджений режим.) По замовчуванню 0, що виключає цю властивість.

Коли зв'язок з партнером пропав, DRBD може або перейти у вироджений режим, або намагатись відновити з'єднання з партнером, або заморозити всі майбутні операції вводу/виводу (подумайте про жорстко примонтований том NFS). Можливими значення є: stand_alone, reconnect і freeze_io. По замовчуванню reconnect.

stand_alone: Не відновлювати зв'язок і перейти у вироджений режим.

reconnect: Старатись відновити зв'язок.

freeze_io: Намагатись відновити зв'язок, але заморозити ввід/вивід поки зв'язок не відновиться знов.

Чекати на з'єднання протягом часу time. init скрипт drbd(8) блокує завантажувальний процес поки DRBD ресурси не зв'яжуться. Це буває коли управління кластером стартує пізніше, внутрішні пов'язані з цим ресурси залишаються невидимі. У випадку бажання обмежити час очікування зробіть це тут. По замовчуванню 0, що значить необмежено. Крок 1 секунда.

Очікування для відновленням з'єднання протягом time, якщо вузол був виродженим кластером. У випадку перевантаження виродженого кластера (= кластер в котрого залишивсь тільки один вузол), цей час очікування використовується замість wfc-timeout, тому що партнер навряд чи включиться в цей проміжок, коли вийшов з ладу перед тим. По замовчуванню 60, крок 1 секунда. Значення 0 означає без обмежень.

Для гарантування стабільної роботи програм поверху DRBD, є можливим обмежити розмір каналу що використовується для синхронізації блочних пристроїв між вузлами кластеру. По замовчуванню 250KB/sec, по замовчуванню крок KB/sec. Можливі суфікси: K, M, G.

Десинхронізація пристроїв однієї групи виконується паралельно. Групи отримують доступ послідовно. Потрібно не дозволяти пристроям які поділяють один фізичний пристрій синхронізуватись паралельно. По замовчуванню всі пристрої є в групі 0 тобто будуть синхронізуватись паралельно. Дозволяються від'ємні та позитивні значення.

DRBD автоматично визначає робочої області. Цим параметром контролюється скільки місця виділяється для роботи (=active set). Кожна одиниця відповідає 4M робочого диску (=низькорівневого пристрою). У випадку неочікуваної зупинки основного вузла, розмір даних визначений опцією, мусить бути розсинхронізований до приєднання вузла. Структура даних зберігається в області службових даних, тому кожна зміна робочої області приводить до операції запису на пристрій з службовими даними. Велике число extents дає довший період десинхронізації але менші поновлення до службових даних. По замовчуванню extents є 127. (Мінімум 7, максимум 3843.)

ВЕРСІЯ

Цей документ коректний для версії 0.7.5 пакету DRBD.

АВТОРИ

Написаний Филипом Рейзнером (Philipp Reisner) <philipp.reisner@linbit.com>.

Сторінка підручника була переглянута та переписана Гелмутом Воллмерсдорфером (Helmut Wollmersdorfer) <helmut.wollmersdorfer@linbit.com>.

ПОВІДОМЛЕННЯ ПОМИЛОК

Повідомляйте помилки на <drbd-user@lists.linbit.com>.

АВТОРСЬКІ ПРАВА

Copyright (c) 2001 Philipp Reisner. Це вільні програми; дивіться джерельні коди для встановлення прав копіювання. Нема ніяких гарантій; навіть для зручності використання в конкретному випадку.

ПОДІБНІ ТЕМИ

drbd - кластер дисків, drbd(8), drbddisk(8), drbdsetup(8), drbdadm(8).

v 0.7.* переклад: бета версія 2007-10-27-16:31 © 2005-2007 DLOU, GNU FDL